// stack.h
//	Data structures to manage LISP-like stack.
//
//      A FIFO stack
//
// Copyright (c) 2011 HUST Seedclass yafeng.Tan
#ifndef STACK_H
#define STACK_H

#include "copyright.h"
#include "debug.h"

template <class T>
class Stack {
public:
	Stack(unsigned int stackSize);
	~Stack();
	bool Push(T item);
	T Pop();
	bool Empty();
	bool Full();

private:
	unsigned int stackSize;
	int Top;
	T* stack;
};	// end of Stack

#include "stack.cc"		// templates are really like macros
				// so needs to be included in every
				// file that uses the template

#endif
